<?php if ( ! defined("BASEPATH")) exit("No direct script access allowed");

class Condicionais extends CI_Controller {
		
	public function __construct(){
		parent::__construct();
		init_painel();
	}

	public function index(){
		$this->gerenciar();
	}
	
	public function cadastrar(){
		esta_logado();
		$this->form_validation->set_rules('id_comprador', 'CLIENTE', 'required');
		if ($this->form_validation->run()==TRUE):
			$dados = elements(array('id_comprador'), $this->input->post(NULL, TRUE));
			$dados['created'] = date('Y-m-d H:i:s');
			
			$id_condicional = $this->condicionais->do_insert($dados, FALSE);
			
			foreach ($this->cart->contents() as $items):
				extract($items);
				extract($options);
				$dados2['id_condicional'] = $id_condicional;
				$dados2['id_produto'] = $id;
				$dados2['quantidade'] = $qty;
				$dados2['valor'] = $price;
				$dados2['created'] = date('Y-m-d H:i:s');
				$this->condicionais->do_insert_condicional($dados2);
				//localizar produto - baixar estoque
				$estoque_produto = $this->produtos->get_byid($dados2['id_produto'], 'id')->row();
				$quantidade['quantidade'] = $estoque_produto->quantidade - $dados2['quantidade'];
				$this->produtos->do_update($quantidade, array('id'=>$dados2['id_produto']));
			endforeach;
			$this->cart->destroy();
			
			set_msg('msgok', 'Cadastro efetuado com sucesso.', 'sucesso');
			redirect(base_url('painel/condicionais/cadastrar'));
		endif;
		$data = array(
			'tela' => 'cadastrar'
		);
		set_tema('footerinc', load_js(array('maskmoney/jquery.maskMoney.min', 'maskmoney/maskmoney-script.min', 'maskedinput/jquery.maskedinput.min', 'maskedinput/maskedinput-script.min', 
		'cidadesEstado.min', 'select2/select2.min', 'select2/select2_locale_pt-BR.min', 'select2/select2-script.min', 'datepicker/foundation-datepicker.min', 'datepicker/datepicker-script.min', 'app.min', 'valida_cpf')));
		set_tema('headerinc', load_css(array('select2/select2-foundation5.min', 'datepicker/foundation-datepicker.min')));
		set_tema('titulo', 'Cadastro de Condicionais');
		set_tema('conteudo', load_modulo('painel', 'condicionais', $data));
		load_template();
	}

	public function gerenciar(){
		esta_logado();
		$data = array(
			'tela'	=> 'gerenciar',
			'query'	=> $query = $this->condicionais->get_all()->result()
		);
		set_tema('headerinc', load_css(array('datatables/dataTables.foundation.min')));
		set_tema('footerinc', load_js(array('datatables/jquery.dataTables.min', 'datatables/dataTables.foundation.min', 'app.min')));
		set_tema('titulo', 'Listagem de Condicionais');
		set_tema('conteudo', load_modulo('painel', 'condicionais', $data));
		load_template();
	}
	
	public function editar(){
		esta_logado();
		$id_condicional = $this->uri->segment(4);
		$this->form_validation->set_rules('id_comprador', 'CLIENTE', 'required');
		if ($this->form_validation->run()==TRUE):
			$dados = elements(array('id_comprador'), $this->input->post(NULL, TRUE));
			
			$this->condicionais->do_update($dados, array('id'=>$id_condicional), FALSE);
			
			foreach ($this->cart->contents() as $items):
				extract($items);
				extract($options);
				$dados2['id_condicional'] = $id_condicional;
				$dados2['id_produto'] = $id;
				$dados2['quantidade'] = $qty;
				$dados2['valor'] = $price;
				$dados2['created'] = date('Y-m-d H:i:s');
				$this->condicionais->do_insert_condicional($dados2);
			endforeach;
			$this->cart->destroy();
			
			set_msg('msgok', 'Alteração dos dados efetuado com sucesso.', 'sucesso');
			redirect(current_url());
		endif;
		$data = array(
			'tela'		=> 'editar',
			'idcondicional'	=> $id_condicional,
			'query'		=> $this->condicionais->get_byid($id_condicional)->row()
		);
		set_tema('footerinc', load_js(array('maskmoney/jquery.maskMoney.min', 'maskmoney/maskmoney-script.min', 'maskedinput/jquery.maskedinput.min', 'maskedinput/maskedinput-script.min', 'cidadesEstado.min', 'select2/select2.min', 'select2/select2_locale_pt-BR.min', 'select2/select2-script.min', 'datepicker/foundation-datepicker.min', 'datepicker/datepicker-script.min', 'app.min')));
		set_tema('headerinc', load_css(array('select2/select2-foundation5.min', 'datepicker/foundation-datepicker.min')));
		set_tema('titulo', 'Alteração de Condicionais');
		set_tema('conteudo', load_modulo('painel', 'condicionais', $data));
		load_template();
	}
	
	public function visualizar(){
		esta_logado();
		$id_condicional = $this->uri->segment(4);
		$this->form_validation->set_rules('id_comprador', 'CLIENTE', 'required');
		if ($this->form_validation->run()==TRUE):
			$dados = elements(array('id_comprador'), $this->input->post(NULL, TRUE));
			
			$this->condicionais->do_update($dados, array('id'=>$id_condicional), FALSE);
			
			foreach ($this->cart->contents() as $items):
				extract($items);
				extract($options);
				$dados2['id_condicional'] = $id_condicional;
				$dados2['id_produto'] = $id;
				$dados2['quantidade'] = $qty;
				$dados2['valor'] = $price;
				$dados2['created'] = date('Y-m-d H:i:s');
				$this->condicionais->do_insert_condicional($dados2);
			endforeach;
			$this->cart->destroy();
			
			set_msg('msgok', 'Alteração dos dados efetuado com sucesso.', 'sucesso');
			redirect(current_url());
		endif;
		$data = array(
			'tela'		=> 'visualizar',
			'idcondicional'	=> $id_condicional,
			'query'		=> $this->condicionais->get_byid($id_condicional)->row()
		);
		set_tema('footerinc', load_js(array('maskmoney/jquery.maskMoney.min', 'maskmoney/maskmoney-script.min', 'maskedinput/jquery.maskedinput.min', 'maskedinput/maskedinput-script.min', 'cidadesEstado.min', 'select2/select2.min', 'select2/select2_locale_pt-BR.min', 'select2/select2-script.min', 'datepicker/foundation-datepicker.min', 'datepicker/datepicker-script.min', 'app.min')));
		set_tema('headerinc', load_css(array('select2/select2-foundation5.min', 'datepicker/foundation-datepicker.min')));
		set_tema('titulo', 'Alteração de Condicionais');
		set_tema('conteudo', load_modulo('painel', 'condicionais', $data));
		load_template();
	}

	public function vender(){
		esta_logado();
		$id_condicional = $this->uri->segment(4);
		$this->form_validation->set_rules('produtos', 'PRODUTOS', '');
		if ($this->form_validation->run()==TRUE):
			foreach ($this->cart->contents() as $items):
				extract($items);
				extract($options);
				$produto = $this->condicionais->get_byid_condicionais_produtos($id_condicional ,$id, TRUE);
				if($produto->num_rows() != '0'):
					set_msg('msgerro', 'Alguns produtos já foram vendidos, verifique os produtos vendidos, remova da lista e continue o procedimento', 'erro');
					redirect(base_url('painel/condicionais/vender/'.$id_condicional));
				endif;
				$dados['situacao'] = 1;
				$this->condicionais->do_update_condicional_item($dados, array('id_condicional' => $id_condicional, 'id_produto' => $id), FALSE);
			endforeach;
			$this->cart->destroy();
			
			set_msg('msgok', 'Alteração dos dados efetuado com sucesso.', 'sucesso');
			redirect(current_url());
		endif;
		$data = array(
			'tela'		=> 'vender',
			'idcondicional'	=> $id_condicional,
			'query'		=> $this->condicionais->get_byid($id_condicional)->row()
		);
		set_tema('footerinc', load_js(array('maskmoney/jquery.maskMoney.min', 'maskmoney/maskmoney-script.min', 'maskedinput/jquery.maskedinput.min', 'maskedinput/maskedinput-script.min', 'cidadesEstado.min', 'select2/select2.min', 'select2/select2_locale_pt-BR.min', 'select2/select2-script.min', 'datepicker/foundation-datepicker.min', 'datepicker/datepicker-script.min', 'app.min')));
		set_tema('headerinc', load_css(array('select2/select2-foundation5.min', 'datepicker/foundation-datepicker.min')));
		set_tema('titulo', 'Venda de Produtos');
		set_tema('conteudo', load_modulo('painel', 'condicionais', $data));
		load_template();
	}
	
	public function listar(){
		esta_logado();
		$id_condicional = $this->uri->segment(4);
		$data = array(
			'tela'		=> 'listar',
			'idcondicional'	=> $id_condicional,
			'query'		=> $this->condicionais->get_byid($id_condicional)->row()
		);
		set_tema('footerinc', load_js(array('app.min')));
		set_tema('titulo', 'Listar produtos da Condicional');
		set_tema('conteudo', load_modulo('painel', 'condicionais', $data));
		load_template();
	}
	
	public function excluir(){
		esta_logado();
		if (is_admin(TRUE)):
			$idcondicional = $this->uri->segment(4);
			if ($idcondicional != NULL):
				$query = $this->condicionais->get_byid($idcondicional);
				if ($query->num_rows()==1):
					$query = $query->row();
					$this->condicionais->do_delete(array('id'=>$query->id), FALSE);
				else:
					set_msg('msgerro', 'Condicional não encontrado para exclusão', 'erro');
				endif;
				/* Exclusão de Atributos */
				$atributos = $this->condicionais->get_byid_atributo($idcondicional, 'id_condicional')->result();
				if($atributos != NULL):
					foreach($atributos as $linha_atributos):
						$this->condicionais->do_delete_atributo(array('id_condicional'=>$linha_atributos->id_condicional), FALSE);
					endforeach;
				endif;
			else:
				set_msg('msgerro', 'Escolha um condicional para excluir', 'erro');
			endif;
		endif;
		redirect('painel/condicionais/gerenciar');
	}

	public function excluir_condicional(){
		esta_logado();
		if (is_admin(TRUE)):
			$idcondicional = $this->uri->segment(4);
			if ($idcondicional != NULL):
				$query = $this->condicionais->get_byid_condicionais($idcondicional);
				if ($query->num_rows()==1):
					$query = $query->row();
					$this->condicionais->do_delete_condicionais(array('id'=>$query->id), FALSE);
				else:
					set_msg('msgerro', 'Condicional não encontrado para exclusão', 'erro');
				endif;
			else:
				set_msg('msgerro', 'Escolha um condicional para excluir', 'erro');
			endif;
		endif;
		$idcondicional = $this->uri->segment(5);
		redirect('painel/condicionais/editar/'.$idcondicional);
	}

	public function adicionar_carrinho(){
		$segment = $this->uri->segment(4);
		$redireciona = $this->input->post('redireciona');
		$produtos = $this->input->post('produtos');
		$qtde_array = count($produtos);
		for($i = 0; $i < $qtde_array; $i++):
			$produto = $this->produtos->get_byid($produtos[$i])->row();
			if($redireciona == 'vender'):
				$condicional_item = $this->verifica_condicional($segment, $produto->id);
				if($condicional_item == NULL):
					set_msg('msgerro', 'O produto '.$produto->nome.' não está nesta condicional.', 'erro');
					continue;
				endif;
			endif;
			$nome = $produto->nome;
			$nome = remove_acentos($nome);
			$nome = remove_caracteres($nome);
			$carrinho['id'] = $produto->id;
			$carrinho['qty'] = 1;
			$carrinho['price'] = $produto->valor;
			$carrinho['name'] = $nome;
			$carrinho['options'] = array(
				'nome' => $produto->nome
			);
			$this->cart->insert($carrinho);
		endfor;
		redirect(base_url('painel/condicionais/'.$redireciona.'/'.$segment));
	}
	
	public function adicionar_carrinho_compra(){
		$id_condicional = $this->uri->segment(4);
		
		/* Inserir no Carrinho de Compras as Condicionais */
		$condicional_item = $this->condicionais->get_byid_condicionais($id_condicional, 'id_condicional')->result();
		foreach($condicional_item as $linha_condicional_item):	
			$id_produto = $this->input->post($linha_condicional_item->id_produto);
			if($id_produto != '0' || $id_produto != NULL):
				$produto = $this->produtos->get_byid($linha_condicional_item->id_produto)->row();
				$nome = $produto->nome;
				$nome = remove_acentos($nome);
				$nome = remove_caracteres($nome);
				$carrinho['id'] = $produto->id;
				$carrinho['qty'] = 1;
				$carrinho['price'] = $produto->valor;
				$carrinho['name'] = $nome;
				$carrinho['options'] = array(
					'nome' => $produto->nome
				);
				$this->cart->insert($carrinho);
			endif;
		endforeach;
		redirect(base_url('painel/vendas/cadastrar/'.$id_condicional));
	}
	
	public function atualizar_carrinho($redirect = true){
		$segment = $this->uri->segment(4);
		$redireciona = $this->input->post('redireciona');
		$this->load->model('produtos_model', 'produtos');
		$contador = $this->input->post('cont', TRUE);
		for($i =1; $i <= $contador; $i++){
			$produto = $this->produtos->get_byid($this->input->post('id'.$i, TRUE))->row();	
			if ($produto->quantidade >= $this->input->post('qty'.$i)):
				$data = array(
					'rowid'     => $this->input->post('rowid'.$i, TRUE),
					'qty'     	=> $this->input->post('qty'.$i, TRUE),
					'price'     => $this->input->post('price'.$i, TRUE),
				);
			else:
				set_msg('msgerro', 'A quantidade máxima para o produto <b>'.$produto->nome.'</b> é de '.$produto->quantidade.' unidade(s)', 'erro');
				$data = array(
					'rowid'      => $this->input->post('rowid'.$i),
					'qty'     => $this->input->post($linha->quantidade),
					'price'     => $this->input->post('price'.$i),
					);
			endif;
			$this->cart->update($data); 
		}
		redirect(base_url('painel/condicionais/'.$redireciona.'/'.$segment));
	}
	
	public function excluir_item(){
		$segment = $this->uri->segment(5);
		$redirect = $this->uri->segment(6);
		$i = $this->uri->segment(4);
		$data = array(
			'rowid'     => $i,
			'qty'     	=> 0,
		);
		$this->cart->update($data); 
		if($segment != NULL):
			redirect(base_url('painel/condicionais/'.$redirect.'/'.$segment));
		else:
			redirect(base_url('painel/condicionais/cadastrar'));
		endif;
	}
	
	public function verifica_condicional($id_condicional = NULL, $id_produto = NULL){
		if($id_condicional != NULL && $id_produto != NULL):
			return $condicional_item = $this->condicionais->get_byid_condicionais_produtos($id_condicional, $id_produto)->row();
		endif;
	}
	
	public function excluir_sugestao(){
		//modifica o modified da tabela condicionais (verificar compradores que nao possui condicionais)
		$id_comprador = $this->uri->segment(4);
		$condicional_cliente = $this->condicionais->get_byid($id_comprador, 'id_comprador', 'desc')->row();
		if($condicional_cliente == NULL):
			$dados['created'] = date('Y-m-d');
			$this->compradores->do_update($dados, array('id'=>$id_comprador), FALSE);
			redirect(base_url('painel/painel'));
		else:
			$dados['modified'] = date('Y-m-d H:i:s');
			$this->condicionais->do_update($dados, array('id_comprador'=>$id_comprador), FALSE);
			redirect(base_url('painel/painel'));
		endif;
	}
	
	public function condicional_automatico(){
		$this->cart->destroy();
		$id_comprador = $this->uri->segment(4);
		global $quantidade_condicional;
		$compradores_atributos = $this->compradores->get_byid_atributo($id_comprador, 'id_comprador', FALSE)->result();
		
		//Quantidade limite em configuraçao definida $quantidade_condicional
		
		foreach($compradores_atributos as $linha_compradores_atributos):
			$cont = 1;
			$produtos_atributos = $this->produtos->get_byid_atributo_condicional($linha_compradores_atributos->id_atributo)->result();
			foreach($produtos_atributos as $linha_produtos_atributos):
				$produto = $this->produtos->get_byid($linha_produtos_atributos->id_produto)->row();
				//adicionar carrinho
				if($produto->quantidade > 0):
					if($cont > $quantidade_condicional):
						$cont = 1;
						break;
					endif;
					$nome = $produto->nome;
					$nome = remove_acentos($nome);
					$nome = remove_caracteres($nome);
					$carrinho['id'] = $produto->id;
					$carrinho['qty'] = 1;
					$carrinho['price'] = $produto->valor;
					$carrinho['name'] = 'produto';
					$carrinho['options'] = array(
						'nome' => $produto->nome
					);
					$this->cart->insert($carrinho);
					$cont++;
				endif;
			endforeach;
		endforeach;
		redirect(base_url('painel/condicionais/cadastrar/'.$id_comprador));
	}
	
}

/* End of file condicionais.php */
/* Location: ./application/controllers/condicionais.php */
